﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using QuanLyKho.GUI.Library;
using QuanLyKho.Common;
using QuanLyKho.DataAccess;
using QuanLyKho.GUI.Frm;

namespace QuanLyKho.GUI
{
    public partial class uclistProvince : UserControl
    {
        private int _ID = 0;
        private long _ReID = 0;
        frmListProvince frm = null;
        private DataSet dsTemp = new DataSet();
        private string NavClicked = "";
        private int totalRows = 25; //Tong so danh sach muon hien thi len DataGridView
        static public long ID = 0;
        public uclistProvince()
        {
            InitializeComponent();
            binDataListProvince();
        }
        private enum NavButton
        {
            First = 1,
            Next = 2,
            Previous = 3,
            Last = 4,
        }

        private void grdProvince_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void binDataListProvince()
        {

            List<clsProvince> listProvince = new clsDataAccessListProvince().ListProvinceSelectAll();
            DataTable dt = new DataTable("Province");
            if (listProvince.Count == 0)
            {
                grdProvince.DataSource = dt;
                return;
            }
            else
            {
                dt.Columns.Add("Check", typeof(CheckBox));
                dt.Columns.Add("ID", typeof(long));
                dt.Columns.Add("STT", typeof(int));
                dt.Columns.Add("Mã", typeof(string));
                dt.Columns.Add("Tên tỉnh", typeof(string));
                dt.Columns.Add("Tên viết tắt", typeof(string));
                dt.Columns.Add("Mô tả", typeof(string));
                DataRow dr;
                int stt = 0;
                foreach (clsProvince obj in listProvince)
                {
                    dr = dt.NewRow();
                    stt = stt + 1;
                    dr[0] = (CheckBox)new CheckBox();
                    dr[1] = obj.ID;
                    dr[2] = stt;
                    dr[3] = obj.Code;
                    dr[4] = obj.Name;
                    dr[5] = obj.ShortName;
                    dr[6] = obj.Des;
                    dt.Rows.Add(dr);
                }
                DataSet ds = new DataSet();
                ds.Tables.Add(dt);

                dsTemp = ds;
                if (ds.Tables[0].Rows.Count > 0)
                    new clsPaging().fillDataGrid(ds, bindingSource1, grdProvince, "", lblPaging, totalRows);
                else
                {
                    bindingSource1.DataSource = null;
                    bindingSource1.Clear();
                    grdProvince.DataSource = bindingSource1;
                }

                if (grdProvince.ColumnCount > 0)
                {
                    grdProvince.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                    grdProvince.Columns[1].Visible = false;
                    grdProvince.Columns[2].Visible = false;
                    grdProvince.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                    grdProvince.Columns[4].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    grdProvince.Columns[5].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    grdProvince.Columns[6].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

                }
            }
        }
        private void ShowForm(long _ID)
        {
            if (_ID < 1)
                frm = new frmListProvince();
            else
                frm = new frmListProvince(_ID);
            frm.StartPosition = FormStartPosition.CenterParent;
            frm.ShowInTaskbar = false;
            frm.MaximizeBox = false;
            frm.MinimizeBox = false;
            frm.ShowDialog();
            binDataListProvince();
        }

        private void grdProvince_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {

        }

        private void butUpdate_Click(object sender, EventArgs e)
        {
            int i = 0;
            long ID;
            foreach (DataGridViewRow row in grdProvince.Rows)
            {
                if ((Convert.ToInt32(row.Cells["status"].Value) == 1) && (Convert.ToInt64(grdProvince.CurrentRow.Cells["status"].Value) == 1))
                    i++;

            }
            if (i > 1)
            {
                new clsLibrary().runLoading("Chọn một tên tỉnh hoặc thành phố muốn sửa!", 0);
                HavitelMessageBox.Show("Chỉ được chọn một tỉnh hoặc thành phố!", "Thông báo", HavitelMessageBox.HavitelMessageButton.OK, HavitelMessageBox.HavitelMessageIcon.Warning);
            }
            if (i == 1)
            {
                ID = Convert.ToInt64(grdProvince.CurrentRow.Cells["ID"].Value.ToString());
                ShowForm(ID);
                new clsLibrary().runLoading("Đã sửa thành công!", 2);

            }
            if (i == 0)
            {
                new clsLibrary().runLoading("Chọn tên tỉnh hoặc thành phố muốn sửa!", 0);
                HavitelMessageBox.Show("Chọn tên tỉnh hoặc thành phố muốn sửa!", "Thông báo", HavitelMessageBox.HavitelMessageButton.OK, HavitelMessageBox.HavitelMessageIcon.Warning);
            }
        }

        private void tsbFirst_Click(object sender, EventArgs e)
        {
            NavClicked = NavButton.First.ToString();
            new clsPaging().fillDataGrid(dsTemp, bindingSource1, grdProvince, NavClicked, lblPaging, totalRows);
        }

        private void chkCheckAll_CheckedChanged(object sender, EventArgs e)
        {
            if (chkCheckAll.Checked == true)
            {
                foreach (DataGridViewRow row in grdProvince.Rows)
                {
                    ((DataGridViewCheckBoxCell)row.Cells["Status"]).Value = true;
                }
            }
            else
            {
                foreach (DataGridViewRow row in grdProvince.Rows)
                {
                    ((DataGridViewCheckBoxCell)row.Cells["Status"]).Value = false;
                }
            }
        }

        private void butAddNew_Click(object sender, EventArgs e)
        {
            ShowForm(0);
        }

        private void butDeletel_Click(object sender, EventArgs e)
        {
            clsDataAccessListProvince listDataAccessListProvince = new clsDataAccessListProvince();
            if (Convert.ToInt64(grdProvince.CurrentRow.Cells["status"].Value) == 0)
                HavitelMessageBox.Show("Chọn tỉnh bạn muốn xóa!", "Thông báo", HavitelMessageBox.HavitelMessageButton.OK, HavitelMessageBox.HavitelMessageIcon.Warning);
            else
            {
                if (HavitelMessageBox.Show("Bạn có muốn xóa thông tin tỉnh này?", "Thông báo", HavitelMessageBox.HavitelMessageButton.OKCancel, HavitelMessageBox.HavitelMessageIcon.Question) == DialogResult.OK)
                {
                    foreach (DataGridViewRow row in grdProvince.Rows)
                    {
                        if (Convert.ToInt32(row.Cells["status"].Value) == 1)
                        {
                            long ID = Convert.ToInt64(row.Cells["ID"].Value.ToString());
                            listDataAccessListProvince.Delete(ID);
                            new clsLibrary().runLoading("Đã xóa thành công!", 2);
                        }

                    }
                }
                else
                {
                    binDataListProvince();
                }
            }
            binDataListProvince();
        }

        private void tsbPrevious_Click(object sender, EventArgs e)
        {
            NavClicked = NavButton.Previous.ToString();
            new clsPaging().fillDataGrid(dsTemp, bindingSource1, grdProvince, NavClicked, lblPaging, totalRows);
        }

        private void tsbNext_Click(object sender, EventArgs e)
        {
            NavClicked = NavButton.Last.ToString();
            new clsPaging().fillDataGrid(dsTemp, bindingSource1, grdProvince, NavClicked, lblPaging, totalRows);
        }

        private void tsbLast_Click(object sender, EventArgs e)
        {
            NavClicked = NavButton.Last.ToString();
            new clsPaging().fillDataGrid(dsTemp, bindingSource1, grdProvince, NavClicked, lblPaging, totalRows);
        }

       
    }
}
